import sys


def inp() -> str:
    return sys.stdin.readline()


fa = []


def init(n: int):
    global fa
    fa = list(range(n + 1))


def find(x: int) -> int:
    if x == fa[x]:
        return x
    else:
        fa[x] = find(fa[x])
        return fa[x]


def merge(x: int, y: int) -> bool:
    x, y = find(x), find(y)
    if x == y:
        return False
    fa[x] = y
    return True


def dis(u: tuple, v: tuple) -> int:
    return (u[0] - v[0]) ** 2 + (u[1] - v[1]) ** 2


n, m = map(int, inp().split(" "))
points = []
for i in range(m):
    points.append(tuple(map(int, inp().split(" "))))
edges = [(u, v, dis(points[u], points[v])) for u in range(m) for v in range(m)]
for u in range(m):
    edges.append((u, m, points[u][0] ** 2 * 4))
    edges.append((u, m + 1, (n - points[u][0]) ** 2 * 4))
edges.sort(key=lambda p: p[2])
init(m + 1)
for e in edges:
    merge(e[0], e[1])
    if find(m) == find(m + 1):
        print("%.2f" % ((e[2] ** 0.5) / 2))
        break
